<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:nyext="urn:noury-extensions">
  <xsl:output method="text" encoding="UTF-8"/>

  <xsl:param name="package" />
  <xsl:param name="outdir" />
  <xsl:param name="name" />

  <xsl:include href="functions.xslt" />
  
  <xsl:template name="generate-user-file">
    <xsl:text>// $Id$
/*! \file
 * \brief Definition of enumerations.
 *
 * \author $Author$
 * \date $Date$
 * \version $Revision$
 */

using System;

namespace </xsl:text>
      <xsl:value-of select="$package" />
      <xsl:text>
{
    ///////////////////////////////////////////////////////////////////////////
    ///
    /// &lt;summary /&gt;
    ///
    ///////////////////////////////////////////////////////////////////////////

    internal static partial class Enums
    {
    }

}
</xsl:text>
  </xsl:template>
  
  <xsl:template name="generate-model-file">
    <xsl:variable name="src">
      <xsl:text>// $Id$
using System;
using System.ComponentModel;
using System.Web;
using System.Web.UI.WebControls;

namespace </xsl:text>
      <xsl:value-of select="$package" />
      <xsl:text>
{


    static partial class Enums
    {

        public static void DropDownListBind(DropDownList ddl, Type type)
        {
            if (!type.IsEnum)
                throw new ArgumentException("type doit être une énumération", "type");
    
            DropDownListBind(ddl, Enum.GetValues(type));
        }
    
        public static void DropDownListBind(DropDownList ddl, System.Array values)
        {
            ddl.Items.Clear();
            foreach (object v in values)
            {
                ddl.Items.Add(
                    new ListItem(
                        string.Format(DomainModel.DescriptionFormatter.Instance, "{0}", v),
                        TypeDescriptor.GetConverter(v.GetType()).ConvertToInvariantString(v)
                    )
                );
            }
        }
    }

}
</xsl:text>
    </xsl:variable>
    <xsl:value-of select="nyext:generateFile($src, nyext:combinePath($outdir, concat(nyext:getModelFileName($name), '.cs')))" />
  </xsl:template>

  <xsl:template match="/">
    <xsl:call-template name="generate-user-file" />
    <xsl:call-template name="generate-model-file" />
  </xsl:template>
</xsl:stylesheet>
